# -*- coding: utf-8 -*-
from django import forms
from django.forms.util import ErrorList
from helpdesk.models import Ocorrencia, Tecnico, Categoria, OcorrenciaStatus
from djtools.formfields import BrDataField
from djtools.formwidgets import BrDataWidget
from comum.models import Pessoa
from datetime import datetime
#from rh.models import Servidor
#from djtools.formwidgets import AutocompleteWidget

##############
# OCORRENCIA #
##############

from django.core.mail import EmailMessage

def enviar_email(instance, email):
    assunto = u'[HelpDesk] Notificação de Atividade - %s' % instance.status
    mensagem = u'[%s] Atividade de %s \n\n Setor: %s \n Problema: %s \n\nNão responda este e-mail' % (instance.status, instance.categoria, instance.setor.sigla, instance.problema)
    sendemail = EmailMessage(assunto, mensagem, to=[email.decode()])
    sendemail.send()

class OcorrenciaForm(forms.ModelForm):
    class Meta:
        model = Ocorrencia
        
    def save(self, commit=True, force_insert=False, force_update=False):
        if 'enviar' in self.data:
            email = self.instance.tecnico.email
            enviar_email(self.instance, email)
        return super(OcorrenciaForm, self).save(commit)
        
    usuario = forms.ModelChoiceField(label=u'Usuário', queryset=Pessoa.objects.all(), required=False)
    tecnico = forms.ModelChoiceField(label=u'Atribuido a', queryset=Tecnico.objects.all())
    categoria = forms.ModelChoiceField(label=u'Categoria', queryset=Categoria.objects.all())
    ocorretor = forms.CharField(label=u'Realizado por', max_length=120, widget=forms.TextInput(attrs={'size':'70'}), required=False)
#    prestador = forms.ModelChoiceField(queryset=Servidor.objects.all(), widget=AutocompleteWidget(extraParams={'force_generic_search': '1'}, minChars=5))
    status = forms.ModelChoiceField(label=u'Status', queryset=OcorrenciaStatus.objects.all())
    data_chegada = BrDataField(label=u'Data de Chegada', widget=BrDataWidget(), initial=datetime.now())
    data_saida = BrDataField(label=u'Data de Saída', widget=BrDataWidget(), required=False)
    numero_patrimonio = forms.IntegerField(label=u'Número do Patrimônio', widget=forms.TextInput(attrs={'size':'14'}), initial=1180, required=False)
    problema = forms.CharField(label=u'Problema', widget=forms.Textarea(attrs={'cols':'80', 'rows':'10'}))
    observacao = forms.CharField(label=u'Observação', widget=forms.Textarea(attrs={'cols':'80', 'rows':'10'}), required=False)
    enviar = forms.BooleanField(label=u'Enviar Email', required=False)
    
    def clean_data_saida(self):
        if self.cleaned_data['status'] == u'Resolvido' or self.cleaned_data['status'] == u'Impedido':
            if not self.cleaned_data['data_saida']:
                self._errors['data_saida'] = ErrorList([u'Este campo é obrigatório.'])
        return self.cleaned_data['data_saida']
    
    def clean_tecnico(self):
        if self.cleaned_data['status'] == u'Resolvido':
            if not self.cleaned_data['tecnico']:
                self._errors['tecnico'] = ErrorList([u'Este campo é obrigatório.'])
        return self.cleaned_data['tecnico']
    

class HistoricoOcorrenciaForm(forms.Form):
    numero_patrimonio = forms.CharField(label=u'Número do Patrimônio', required=False, widget=forms.TextInput(attrs={'size':'50'}))
    
    METHOD = 'GET'
    TITLE = 'Historico de Ocorrência'